/**
vue 是采用数据劫持配合发布者和订阅者模式的方式，通过Object.finerProperty()来劫持
 各个属性的setter和getter，在数据变动时候，发布消息给依赖收集器，去通知观察者，
 做出对应的回调函数，去更新视图

 Compile:实现一个指令解析器
 Observer:实现一个数据监听器
 watcher:实现去更新视图
 proxy代理vm.$data

 MVVM作为绑定的入口，整合Observer，Compile和watcher三者，通过Observer来监听
 model数据变化表，通过Compile解析编译模板指令，最终利用watcher搭起Observer、Compile
 之间的通信桥梁，达到数据变化=>视图更新变化=>数据model变更的双向绑定效果
 */